Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • View renderedDownload


README.md master (086d5851) Text, 10.44 KB

Tc9d1d9# Nomad Network - Communicate Freely

*This repository is [a public mirror](./MIRROR.md). All development is happening elsewhere.*

Off-grid, resilient mesh communication with strong encryption, forward secrecy and extreme privacy.

![Tff7b72Screenshot](Te6edf3https://github.com/markqvist/NomadNet/raw/master/docs/screenshots/1.png)

Nomad Network allows you to build private and resilient communications platforms that are in complete control and ownership of the people that use them. No signups, no agreements, no handover of any data, no permissions and gatekeepers.

Nomad Network is build on [Tff7b72LXMF](Te6edf3https://github.com/markqvist/LXMF) and [Tff7b72Reticulum](Te6edf3https://github.com/markqvist/Reticulum), which together provides the cryptographic mesh functionality and peer-to-peer message routing that Nomad Network relies on. This foundation also makes it possible to use the program over a very wide variety of communication mediums, from packet radio to fiber optics.

Nomad Network does not need any connections to the public internet to work. In fact, it doesn't even need an IP or Ethernet network. You can use it entirely over packet radio, LoRa or even serial lines. But if you wish, you can bridge islanded networks over the Internet or private ethernet networks, or you can build networks running completely over the Internet. The choice is yours. Since Nomad Network uses Reticulum, it is efficient enough to run even over *extremely* low-bandwidth medium, and has been succesfully used over 300bps radio links.

If you'd rather want to use an LXMF client with a graphical user interface, you may want to take a look at [Tff7b72Sideband](Te6edf3https://github.com/markqvist/sideband), which is available for Linux, Android and macOS.

Tc9d1d9## Notable Features
Tff7b72- Encrypted messaging over packet-radio, LoRa, WiFi or anything else [Tff7b72Reticulum](Te6edf3https://github.com/markqvist/Reticulum) supports.
Tff7b72- Zero-configuration, minimal-infrastructure mesh communication
Tff7b72- Distributed and encrypted message store holds messages for offline users
Tff7b72- Connectable nodes that can host pages and files
Tff7b72- Node-side generated pages with PHP, Python, bash or others
Tff7b72- Built-in text-based browser for interacting with contents on nodes
Tff7b72- An easy to use and bandwidth efficient markup language for writing pages
Tff7b72- Page caching in browser

Tc9d1d9## How do I get started?
The easiest way to install Nomad Network is via pip:

Ta5d6ff```Ta5d6ffbash
T8b949e# Install Nomad Network and dependencies
pip install nomadnet

T8b949e# Run the client
nomadnet

T8b949e# Or alternatively run as a daemon, with no user interface
nomadnet --daemon

T8b949e# List options
nomadnet --help
Ta5d6ff```

If you are using an operating system that blocks normal user package installation via Ta5d6ff`pip`, you can return Ta5d6ff`pip` to normal behaviour by editing the Ta5d6ff`~/.config/pip/pip.conf` file, and adding the following directive in the Ta5d6ff`[global]` section:

Ta5d6ff```Ta5d6fftext
[global]
break-system-packages = true
Ta5d6ff```

Alternatively, you can use the Ta5d6ff`pipx` tool to install Nomad Network in an isolated environment:

Ta5d6ff```Ta5d6ffbash
T8b949e# Install Nomad Network
pipx install nomadnet

T8b949e# Optionally install Reticulum utilities
pipx install rns

T8b949e# Optionally install standalone LXMF utilities
pipx install lxmf

T8b949e# Run the client
nomadnet

T8b949e# Or alternatively run as a daemon, with no user interface
nomadnet --daemon

T8b949e# List options
nomadnet --help
Ta5d6ff```

**Please Note**: If this is the very first time you use pip to install a program on your system, you might need to reboot your system for the program to become available. If you get a "command not found" error or similar when running the program, reboot your system and try again.

The first time the program is running, you will be presented with the **Guide section**, which contains all the information you need to start using Nomad Network.

To use Nomad Network on packet radio or LoRa, you will need to configure your Reticulum installation to use any relevant packet radio TNCs or LoRa devices on your system. See the [Tff7b72Reticulum documentation](Te6edf3https://markqvist.github.io/Reticulum/manual/interfaces.html) for info. For a general introduction on how to set up such a system, take a look at [Tff7b72this post](Te6edf3https://unsigned.io/private-messaging-over-lora/).

If you want to try Nomad Network without building your own physical network, you can connect to the [Tff7b72Unsigned.io RNS Testnet](Te6edf3https://github.com/markqvist/Reticulum#public-testnet) over the Internet, where there is already some Nomad Network and LXMF activity. If you connect to the testnet, you can leave nomadnet running for a while and wait for it to receive announces from other nodes on the network that host pages or services, or you can try connecting directly to some nodes listed here:

Tff7b72- Ta5d6ff`abb3ebcd03cb2388a838e70c001291f9` Dublin Hub Testnet Node
Tff7b72- Ta5d6ff`ea6a715f814bdc37e56f80c34da6ad51` Frankfurt Hub Testnet Node

To browse pages on a node that is not currently known, open the URL dialog in the Ta5d6ff`Network` section of the program by pressing Ta5d6ff`Ctrl+U`, paste or enter the address and select Ta5d6ff`Go` or press enter. Nomadnet will attempt to discover and connect to the requested node.

Tc9d1d9### Install on Android
You can install Nomad Network on Android using Termux, but there's a few more commands involved than the above one-liner. The process is documented in the [Tff7b72Android Installation](Te6edf3https://markqvist.github.io/Reticulum/manual/gettingstartedfast.html#reticulum-on-android) section of the Reticulum Manual. Once the Reticulum has been installed according to the linked documentation, Nomad Network can be installed as usual with pip.

For a native Android application with a graphical user interface, have a look at [Tff7b72Sideband](Te6edf3https://github.com/markqvist/Sideband).

Tc9d1d9### Docker Images

Nomad Network is automatically published as a docker image on Github Packages. Image tags are one of either Ta5d6ff`master` (for the very latest commit) or the version number (eg Ta5d6ff`0.2.0`) for a specific release.

Ta5d6ff```Ta5d6ffsh
$ docker pull ghcr.io/markqvist/nomadnet:master

T8b949e# Run nomadnet interactively in a container
$ docker run -it ghcr.io/markqvist/nomadnet:master --textui

T8b949e# Run nomadnet as a daemon, using config stored on the host machine in specified
T8b949e# directories, and connect the containers network to the host network (which will
T8b949e# allow the default AutoInterface to automatically peer with other discovered
T8b949e# Reticulum instances).
$ docker run -d Tffea00\
-v /local/path/nomadnetconfigdir/:/root/.nomadnetwork/ Tffea00\
-v /local/path/reticulumconfigdir/:/root/.reticulum/ Tffea00\
--network host
ghcr.io/markqvist/nomadnet:master

T8b949e# You can also keep the network of the container isolated from the host, but you
T8b949e# will need to manually configure one or more Reticulum interfaces to reach other
T8b949e# nodes in a network, by editing the Reticulum configuration file.
$ docker run -d Tffea00\
-v /local/path/nomadnetconfigdir/:/root/.nomadnetwork/ Tffea00\
-v /local/path/reticulumconfigdir/:/root/.reticulum/ Tffea00\
ghcr.io/markqvist/nomadnet:master

T8b949e# Send daemon log output to console instead of file
$ docker run -i ghcr.io/markqvist/nomadnet:master --daemon --console
Ta5d6ff```

Tc9d1d9## Tools & Extensions

Nomad Network is a very flexible and extensible platform, and a variety of community-provided tools, utilities and node-side extensions exist:

Tff7b72- [Tff7b72NomadForum](Te6edf3https://codeberg.org/AutumnSpark1226/nomadForum) ([GitHub mirror](https://github.com/AutumnSpark1226/nomadForum))
Tff7b72- [Tff7b72NomadForecast](Te6edf3https://github.com/faragher/NomadForecast)
Tff7b72- [Tff7b72micron-blog](Te6edf3https://github.com/randogoth/micron-blog)
Tff7b72- [Tff7b72md2mu](Te6edf3https://github.com/randogoth/md2mu)
Tff7b72- [Tff7b72Any2MicronConverter](Te6edf3https://github.com/SebastianObi/Any2MicronConverter)
Tff7b72- [Tff7b72Some nomadnet page examples](Te6edf3https://github.com/SebastianObi/NomadNet-Pages)
Tff7b72- [Tff7b72More nomadnet page examples](Te6edf3https://github.com/epenguins/NomadNet_pages)
Tff7b72- [Tff7b72LXMF-Bot](Te6edf3https://github.com/randogoth/lxmf-bot)
Tff7b72- [Tff7b72LXMF Messageboard](Te6edf3https://github.com/chengtripp/lxmf_messageboard)
Tff7b72- [Tff7b72LXMEvent](Te6edf3https://github.com/faragher/LXMEvent)
Tff7b72- [Tff7b72POPR](Te6edf3https://github.com/faragher/POPR)
Tff7b72- [Tff7b72LXMF Tools](Te6edf3https://github.com/SebastianObi/LXMF-Tools)

Tc9d1d9## Help & Discussion

For help requests, discussion, sharing ideas or anything else related to Nomad Network, please have a look at the [Tff7b72Nomad Network discussions pages](Te6edf3https://github.com/markqvist/Reticulum/discussions/categories/nomad-network).

Tc9d1d9## Support Nomad Network
You can help support the continued development of open, free and private communications systems by donating via one of the following channels:

Tff7b72- Monero:
Ta5d6ff ```
84FpY1QbxHcgdseePYNmhTHcrgMX4nFfBYtz2GKYToqHVVhJp8Eaw1Z1EedRnKD19b3B8NiLCGVxzKV17UMmmeEsCrPyA5w
```
Tff7b72- Bitcoin
Ta5d6ff ```
bc1pgqgu8h8xvj4jtafslq396v7ju7hkgymyrzyqft4llfslz5vp99psqfk3a6
```
Tff7b72- Ethereum
Ta5d6ff ```
0x91C421DdfB8a30a49A71d63447ddb54cEBe3465E
```
Tff7b72- Liberapay: https://liberapay.com/Reticulum/

Tff7b72- Ko-Fi: https://ko-fi.com/markqvist


Tc9d1d9## Development Roadmap

Tff7b72- New major features
Tff7b72- Network-wide propagated bulletins and discussion threads
Tff7b72- Collaborative maps and geospatial information sharing
Tff7b72- Minor improvements and fixes
Tff7b72- Link status (RSSI and SNR) in conversation or conv list
Tff7b72- Ctrl-M shorcut for jumping to menu
Tff7b72- Share node with other users / send node info to user
Tff7b72- Fix internal editor failing on some OSes with no "editor" alias
Tff7b72- Possibly add a required-width header
Tff7b72- Improve browser handling of remote link close
Tff7b72- Better navigation handling when requests fail (also because of closed links)
Tff7b72- Retry failed messages mechanism
Tff7b72- Re-arrange buttons to be more consistent
Tff7b72- Term compatibility notice in readme
Tff7b72- Selected icon in conversation list
Tff7b72- Possibly a Search Local Nodes function
Tff7b72- Possibly add via entry in node info box, next to distance

Tc9d1d9## Caveat Emptor
Nomad Network is beta software, and should be considered as such. While it has been built with cryptography best-practices very foremost in mind, it _has not_ been externally security audited, and there could very well be privacy-breaking bugs. If you want to help out, or help sponsor an audit, please do get in touch.

Tc9d1d9## Screenshots

![Tff7b72Screenshot 1](Te6edf3https://github.com/markqvist/NomadNet/raw/master/docs/screenshots/1.png)

![Tff7b72Screenshot 2](Te6edf3https://github.com/markqvist/NomadNet/raw/master/docs/screenshots/2.png)

![Tff7b72Screenshot 3](Te6edf3https://github.com/markqvist/NomadNet/raw/master/docs/screenshots/3.png)

![Tff7b72Screenshot 4](Te6edf3https://github.com/markqvist/NomadNet/raw/master/docs/screenshots/4.png)

![Tff7b72Screenshot 5](Te6edf3https://github.com/markqvist/NomadNet/raw/master/docs/screenshots/5.png)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────